package jonggyuni.basic;

public class J14_StaticMember {

	public static void main(String[] args) {
		// static 멤버변수 다루기
				
		
		Car car1 = new Car("BMW", "rx100",2,1);
		//car1객체가 생성되면 정적변수 total에 1을 증가 시킴
		Car car2 = new Car("Honda", "t320",4,2);
		//car2객체가 생성되면 정적변수 total에 1을 증가시킴
		System.out.println(car1.getCounter());
		System.out.println(car2.getCounter());
		System.out.println(Car.total);

/*		Car car = new Car();
		
		car.setMaker("기아");
		car.setModel("기아차");
		car.setDoors(4);
		car.setCounter("서울 가 1234");
		
		System.out.println(car.toString());*/
	}//main

}//class

//차량 정보를 다루는 클래스 : Car
//제조사 : maker
//모델명 : model
//문짝수 : doors
//차량번호 : counter

class Car{
	private String maker;
	private String model;
	private int doors;
	private int counter;
	//멤버변수 maker,model,doors,counter등은
	//new 연산자로 객체를 생성할 때 변수가 만들어짐
	
	public static int total; //정적멤버변수 =>프로그램 시작할 때 생성됨
	//하지만, 정적변수 total은
	//프로그램이 실행 될 때 미리 변수가 만들어짐
	
	public Car(){}
	//모든 멤버변수를 초기화 하는 생성자 정의
	public Car(String maker, String model, int doors, int counter){
		this.maker = maker;
		this.model = model;
		this.doors = doors;
		this.counter = counter;
		++total;// Car 객체가 생성될때마다 total 증가
	}
	public Car(String maker, String model){
		this(maker, model, 4, 0);
		//기존의 만들어진 생성자를 간편하게 호출하기 위해 
		//this라는 접두사를 사용
		++total;
	}
	
	
	//setter 정의
	public void setMaker(String maker, String model){
		this.maker = maker;
		this.model = model;
		++total;// Car 객체가 생성될때마다 total 증
	}

	public void setDoors(int doors){
		this.doors = doors;
	}
	
	public void setCounter(int counter){
		this.counter = counter;
	}
	
	
	//getter 정의
	public String getMaker(){
		return maker;
	}
	
	public String getModel(){
		return model;
	}
	
	public int getDoors(){
		return doors;
	}
	
	public int getCounter(){
		return counter;
	}
	
	//alt+shift+s => Generate getter and setter 
	//변수를 기준으로 만들어 진다.
/*	public String getMaker() {
		return maker;
	}
	public void setMaker(String maker) {
		this.maker = maker;
	}
	
	public String getModel() {
		return model;
	}
	public void setModel(String model) {
		this.model = model;
	}
	
	public int getDoors() {
		return doors;
	}
	public void setDoors(int doors) {
		this.doors = doors;
	}
	
	public int getCounter() {
		return counter;
	}
	public void setCounter(int counter) {
		this.counter = counter;
	}*/
	//toString 정의	
	@Override
	public String toString() {
		String carInfo = "";
		carInfo = carInfo + "제조사 : "+ maker+"\n";
		carInfo = carInfo + "모델명 : "+ model+"\n";
		carInfo = carInfo + "문짝수 : "+doors+"\n";
		carInfo = carInfo + "차량넘버 : "+counter+"\n";		
		return carInfo;
	}
	
	
}// class Car